草庐IT

java try finally 阻止关闭流

全部标签

java - 我应该从两端关闭套接字吗?

我有以下问题。我的客户端程序监视本地网络中服务器的可用性(使用Bonjour,但它不支持mater)。一旦服务器被客户端应用程序“注意到”,客户端就会尝试创建套接字:Socket(serverIP,serverPort);。在某些时候,客户端可能会丢失服务器(Bonjour说服务器在网络中不再可见)。因此,客户端决定关闭套接字,因为它不再有效。某时服务器再次出现。因此,客户端尝试创建一个与该服务器关联的新套接字。但!服务器可以拒绝创建此套接字,因为它(服务器)已经有一个与客户端IP和客户端端口关联的套接字。发生这种情况是因为套接字是由客户端而不是服务器关闭的。它会发生吗?如果是这样,如

java - 从关闭文件方法抛出 IOException 时如何管理事务(包括文件 IO)

我最近开始使用Spring的数据源事务管理器。我现在有问题。我的事务包括对数据库表的更新和对文件的写操作。它工作正常,但我对文件I/O有一些疑问。正如您在下面看到的,我已经将我的bean的openFile和closeFile方法分别配置为init方法和destroy方法,这反过来又提供了这些方法,就像构造函数和析构函数一样被调用。如果文件没有正确关闭,一些记录可能没有成功写入output.txt文件,这意味着我也无法正确处理事务管理。但是,我想回滚那些尚未附加到平面文件的数据库更新。使用我的解决方案,似乎不可能将fileClose方法添加到事务中。有谁知道如何正确执行此所需操作?如有任

java - 如何检测 JFrame 是否关闭?

我尝试了addWindowListener并实现了windowClosing,当我按下关闭按钮时,它起作用了,但是当我使用Cmd+Q时要关闭,windowClosing没有被调用,我该如何解决?我是否需要通过按键监听器在Mac上检测Cmd+Q,在Windows上检测Alt+F4?这是关闭窗口的通用监听器,无论是通过关闭按钮或键盘,还是通过事件Ctrl+Alt+Delete或Cmd+Option+Esc来集中杀戮?谢谢。 最佳答案 我不确定在Mac上的情况如何,但在Windows上您会从关闭按钮获得windowClosing()回调;

java - 在响应完成之前关闭 HttpURLConnection

背景我正在使用HttpURLConnection在客户端使用HTTP流(服务器推送)情况下的响应。尽管服务器可能会通过关闭响应来关闭连接,但也需要客户端能够执行此操作。问题客户端在单独的线程中处理InputStream,如下所示:@Overridepublicvoidrun(){try{for(intb=in.read();b>=0;b=in.read()){charc=(char)b;//Dosomethingwiththecharacter//...}}catch(IOExceptione){}}所以当我调用HttpURLConnection.disconnect()从发起连接的线

java - 单击关闭按钮时 awt 窗口不关闭

我为虚拟键盘实现了一个示例类并运行了这个VirtualKeyboardTest。出现了键盘,但主要问题是单击x按钮时它没有正确关闭。我该如何纠正这个问题?importjava.awt.*;importjava.awt.event.*;publicclassVirtualKeyboardTest{publicstaticvoidmain(Stringargs[]){VirtualKeyboardvk=newVirtualKeyboard();vk.setSize(500,300);vk.setVisible(true);Framef1=newFrame();f1.addWindowLis

java - 尝试写入已关闭的连接时套接字不会抛出异常

我是java套接字编程的新手,但我遇到了这个问题。当我尝试写入客户端意外关闭的连接时,我没有得到任何异常。我有服务器端。publicstaticvoidmain(String[]args)throwsIOException{ServerSocketsocket=newServerSocket(8036);Stringst;while(true){System.out.println("hello");Socketsocket1=socket.accept();BufferedReaderreader=newBufferedReader(newInputStreamReader(sock

java - 单次执行后关闭 PreparedStatement——这是设计缺陷吗?

我调查了很多地方,听到了很多可疑的说法,从PreparedStatement应该比Statement更受欢迎,即使只是为了性能优势;一路声称PreparedStatement应该专门用于批处理语句,而不是其他。但是,我关注的(主要是在线的)讨论似乎存在盲点。让我展示一个具体的场景。我们有一个带有数据库连接池的EDA设计的应用程序。事件来了,有的需要坚持,有的不需要。有些是人为生成的(例如,每X分钟更新/重置一些内容)。一些事件按顺序发生和处理,但其他类型的事件(也需要持久性)可以(并且将会)并发处理。除了那些人为生成的事件之外,没有关于需要持久化的事件如何到达的结构。此应用程序是很久以

java - Swing 模态对话框拒绝关闭 - 有时!

//Thisissupposedtoshowamodaldialogandthenhideitagain.Inpractice,//thisworksabout75%ofthetime,andtheother25%ofthetime,thedialog//staysvisible.//ThisisonUbuntu10.10,running://OpenJDKRuntimeEnvironment(IcedTea61.9)(6b20-1.9-0ubuntu1)//Thisalwaysprints//setVisible(true)abouttohappen//setVisible(fals

java - 如何在 Java Swing 中创建关闭窗口的处理程序

当我的窗口(使用JavaSwing创建)关闭时,我试图调用一个函数来进行清理。在我的初始化代码中,我这样做:publicclassFormLoginextendsJFrame{privatevoidinitComponents(){...setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);addWindowListener(newjava.awt.event.WindowAdapter(){publicvoidwindowClosed(java.awt.event.WindowEventevt){for

java - 多次打开和关闭同一文件与长时间打开文件

每当JTextArea字段中的内容发生任何变化时,我都会写入一个File。我决定每次根据更改事件打开和关闭文件内容。有点像,publicvoidaddToLogFile(StringchangeContent){try{PrintWriterpw=newPrintWriter(newBufferedWriter(newFileWriter(currentLogFile,true)));pw.print(changeContent);pw.close();}catch(FileNotFoundExceptionex){Logger.getLogger(Main.class.getName